import BASE_URL from './env.js' //引入接口共用地址
import {autologin} from './autoLogin.js' //导入封装好的js文件


export const request = (options) => {
	return new Promise((resolve, reject) => {
		// 获取用户令牌
		let token = uni.getStorageSync('Token')
		// 设置请求头
		const header = {
			'Content-Type': 'application/json',
			Authorization: `${token}`,
			...options.header // 可以传入额外的请求头参数
		}
		// ⭐在发送请求之前执行拦截操作
		uni.request({
			url: BASE_URL + options.url, //接收请求的API
			method: options.method || 'GET', //接收请求的方式,如果不传默认为GET
			data: options.data || {}, //接收请求的data,不传默认为空
			header: options.needToken ? header : '', //接收请求的header
			success(res) {
				// ⭐在这里处理接收到响应后处理响应数据
				const {
					data = {}
				} = res;
				// ⭐在这里处理接收到响应后处理响应数据
				if (['B0602', 'A0307', 'A1871', 'B0301'].includes(data.code)) {
					// 提示重新登录
					uni.removeStorage('token')
					autologin()
					return;
				} else if (['U10001'].includes(data.code)) {
					uni.showToast({
						title: '登录过期，请重新登录',
						icon: 'none'
					})
					setTimeout(() => {
						uni.reLaunch({
							url: '/pages/login/login'
						})
					}, 1000)
				} else if (!data.success) {
					return uni.showToast({
						icon: "error",
						title: data.message
					})
				}
				resolve(res.data) // 使用resolve将数据传递出去
			},
			fail: (err) => {
				reject(err)
			}
		})
	})
}

export class UploadRequest {
    static convertFileIds( fileIds, fileId) {
        return [ ...fileIds.split(","), fileId].filter(Boolean)
            .join(",")
    }
    static upload(filepath, fileIds = "") {
        return new Promise((resolve, reject) => {
            uni.uploadFile({
                url: BaseUrl + '/sysFileInfo/upload', //接收请求的API
                name: 'file',
                filePath: filepath,
                formData: { 
									'secretFlag': 'Y' ,
								},
                header: {
                    'Content-Type': 'multipart/form-data',
                    Authorization: uni.getStorageSync('token')
                },
                success: (res) => {
                    const { data = {}} = JSON.parse(res.data);
                    resolve(data)
                },
                fail: (err) => {
                    reject(err)
                }
            })
        })
    }

    static getFileInfo( fileIds) {
        return request({
            url: '/fileInfo/getFileAuthPath?fileIds=' + fileIds,
            method: 'GET'
        })
    }
}